package com.mazaiting.manager.convert;

import com.mazaiting.manager.domain.entity.SysDept;
import com.mazaiting.manager.domain.form.DeptForm;
import com.mazaiting.manager.domain.vo.dept.DeptDetailVO;
import com.mazaiting.manager.domain.vo.dept.DeptVO;
import org.mapstruct.Mapper;
import org.mapstruct.MappingConstants;
import org.mapstruct.MappingTarget;
import org.mapstruct.ReportingPolicy;

/**
 * 部门对象转换器
 *
 * @author mazaiting
 * @create_time 2022/9/20 22:58
 */
@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface IDeptConverter {

    /**
     * 表单数据转换为数据库实体
     * @param deptForm 部门表单数据
     * @return 数据库实体
     */
    SysDept form2Entity(DeptForm deptForm);

    /**
     * 实体转换为 VO
     * @param dept 实体
     * @return VO
     */
    DeptVO entity2VO(SysDept dept);

    /**
     * 实体转详情 VO
     * @param sysDept 实体
     * @return VO
     */
    DeptDetailVO entity2DetailVO(SysDept sysDept);

    /**
     * 更新表单数据到已有对象
     * @param deptForm 部门表单数据
     * @param sysDept 部门实体
     */
    void updateForm2Entity(DeptForm deptForm, @MappingTarget SysDept sysDept);
}
